package com.sourceQ.system.service.message.mail;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sourceQ.system.domain.message.mail.SysMailAccount;
import com.sourceQ.system.dto.message.MailAccountPageReqDTO;
import com.sourceQ.system.dto.message.MailAccountSaveReqDTO;

import javax.validation.Valid;
import java.util.List;

/**
 * @author: SourceQ
 * @create: 2024-04-18 17:32
 * @Description:
 */
public interface SysMailAccountService extends IService<SysMailAccount> {

    /**
     * 创建邮箱账号
     *
     * @param createReqVO 邮箱账号信息
     * @return 编号
     */
    Long createMailAccount(@Valid MailAccountSaveReqDTO createReqVO);

    /**
     * 修改邮箱账号
     *
     * @param updateReqVO 邮箱账号信息
     */
    void updateMailAccount(@Valid MailAccountSaveReqDTO updateReqVO);

    /**
     * 删除邮箱账号
     *
     * @param id 编号
     */
    void deleteMailAccount(Long id);

    /**
     * 获取邮箱账号信息
     *
     * @param id 编号
     * @return 邮箱账号信息
     */
    SysMailAccount getMailAccount(Long id);

    /**
     * 从缓存中获取邮箱账号
     *
     * @param id 编号
     * @return 邮箱账号
     */
    SysMailAccount getMailAccountFromCache(Long id);

    /**
     * 获取邮箱账号分页信息
     *
     * @param pageReqVO 邮箱账号分页参数
     * @return 邮箱账号分页信息
     */
    IPage<SysMailAccount> getMailAccountPage(Page page,MailAccountPageReqDTO pageReqVO);

    /**
     * 获取邮箱数组信息
     *
     * @return 邮箱账号信息数组
     */
    List<SysMailAccount> getMailAccountList();
}
